package com.tree;

import java.util.ArrayList;
import java.util.List;

/**
 * @Author:hanguanglei
 * @Description:
 * @Date: Created in 2020-10-07 14:01
 * @Modified By:
 */

public class CreateTreeNode {

    private TreeNode tempNode;
    private List<TreeNode> nodeList=new ArrayList<>();


    //生成一个完整的树结构
  public void CreateTreeNodeInsert(TreeNode root,List<TreeNode> treeNodeList){

    //  TreeNode[] nodeArray=new TreeNode[treeNodeList.size()-1];

      //获取根节点分支
     // tempNode=treeNodeList.get(0);

      for (int x=0;x<treeNodeList.size();x++){

         /// nodeArray[x] =treeNodeList.get(x);

//        if (insertTreeNode(root, treeNodeList.get(x))){
//
//            treeNodeList.remove(x);
//
//            tempNode=root;
//
//            nodeList=treeNodeList;
//
//        }
          addChild(root,treeNodeList.get(x));

          tempNode=root;


      }



  }




    public TreeNode getTreeNode() {
        return tempNode;
    }
    //在一个树节点下插入新的树节点
//    public boolean  insertTreeNode(TreeNode root,TreeNode newtreeNode){
//      List<TreeNode> list=new ArrayList<>();
//      for (TreeNode treeNode:root.getChildLst()){
//          if (treeNode.equals(newtreeNode)) {
//
//              for (TreeNode chtree : newtreeNode.getChildLst()) {
//
//                  treeNode.addNode(chtree);
//              }
//
//              return true;
//          }
//
//      }
//
//
//      return false;
//    }



    //向指定多叉树节点添加新节点
    public void addChild(TreeNode manyTreeNode, TreeNode child)
    {
        for(TreeNode item : manyTreeNode.getChildLst())
        {
            if(item.getNodeName().equals(child.getNodeName()))
            {
                //找到对应的父亲
                item.getChildLst().add(child);
                break;
            } else {
                if(item.getChildLst() != null && item.getChildLst().size() > 0)
                {
                    addChild(item, child);
                }
            }
        }
    }

//
//    //搜索叶子节点最后一层节点
//    public List<TreeNode> searchLeafNode(TreeNode treeNode){
//
//      List<TreeNode> node=treeNode.getChildLst();
//      if (node.size()>0){
//
//          for (TreeNode tt:node){
//
//              if (tt.getChildLst().size()>0){
//
//              }
//              List<TreeNode> nodeL=searchLeafNode(tt);
//          }
//
//
//      }
//      return searchLeafNode(treeNode.getChildLst())
//    }
}
